home *** CD-ROM | disk | FTP | other *** search
- #include <string.h>
- #import "plain-subject.h"
- #import <stdio.h>
- #import <appkit/nextstd.h>
-
- static short delta[7][256];
- static BOOL didInit=NO;
-
- char *plain_subject(char *subject,BOOL *reply)
- {
- char *originalSubject=subject;
- int state=2,i;
-
- if(!subject){
- NXLogError("plain_subject.c: called with NULL pointer");
- return NULL;
- }
-
- if(!didInit)
- {
- didInit=YES;
- memset(delta,0,6*256*sizeof(short));
- for(i=0;i<256;i++)
- delta[6][i]=1;
- delta[2]['r']=3; delta[2]['R']=3;
- delta[3]['e']=4; delta[3]['E']=4;
- delta[4]['^']=5; delta[4][':']=6;
- delta[5]['0']=5; delta[5]['1']=5; delta[5]['2']=5; delta[5]['3']=5;
- delta[5]['4']=5; delta[5]['5']=5; delta[5]['6']=5; delta[5]['7']=5;
- delta[5]['8']=5; delta[5]['9']=5; delta[5][':']=6;
- delta[6][' ']=6; delta[6][ 0]=0;
- }
- while(state>1)
- state=delta[state][(unsigned char)*originalSubject++];
- *reply=state;
- if(*reply)
- originalSubject--;
- else
- originalSubject=subject;
- return originalSubject;
- }
-
- /*
-
- digit space
- / \ / \
- R,r E,e ^ \ / : \ /
- (2) -----> (3) -----> (4) -----> (5) -----> (6) -----> ((1))
- \___________________/
- :
-
- */
-